// --------------------------------------------------------------------------------------------------------------------
// <copyright file="UpDownSliderEventArgs.cs" company="Roman '4ux-nbIx' Novitsky">
//   Copyright (c) Roman '4ux-nbIx' Novitsky 2010
// </copyright>
// <summary>
//   Defines the UpDownSliderEventArgs type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace MtgMC
{
    #region Namespace Imports

    using System;

    #endregion


    /// <summary>
    /// Describes and manipulates up down slider event arguments.
    /// </summary>
    /// <typeparam name="TValue">
    /// The type of the value.
    /// </typeparam>
    public class UpDownSliderEventArgs<TValue> : EventArgs
    {
        #region Constants and Fields

        private readonly TValue _currentValue;
        private readonly TValue _delta;
        private readonly TValue _previousValue;

        #endregion


        #region Constructors and Destructors

        /// <summary>
        /// Initializes a new instance of the <see cref="UpDownSliderEventArgs{TValue}"/> class. 
        /// Initializes a new instance of the <see cref="UpDownSliderEventArgs&lt;TValue&gt;"/> class.
        /// </summary>
        /// <param name="previousValue">
        /// The previous value.
        /// </param>
        /// <param name="currentValue">
        /// The current value.
        /// </param>
        /// <param name="delta">
        /// The delta.
        /// </param>
        public UpDownSliderEventArgs(TValue previousValue, TValue currentValue, TValue delta)
        {
            _previousValue = previousValue;
            _currentValue = currentValue;
            _delta = delta;
        }

        #endregion


        #region Properties

        /// <summary>
        /// Gets the current value.
        /// </summary>
        /// <value>
        /// The current value.
        /// </value>
        public TValue CurrentValue
        {
            get
            {
                return _currentValue;
            }
        }


        /// <summary>
        /// Gets the delta.
        /// </summary>
        /// <value>
        /// The delta.
        /// </value>
        public TValue Delta
        {
            get
            {
                return _delta;
            }
        }

        /// <summary>
        /// Gets the previous value.
        /// </summary>
        /// <value>
        /// The previous value.
        /// </value>
        public TValue PreviousValue
        {
            get
            {
                return _previousValue;
            }
        }

        #endregion
    }
}